Skip to content

Do not copy .rmeta files into the sysroot of the build compiler during check of rustc/std #144252

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

Kobzol
Copy link
Member

@Kobzol Kobzol commented Jul 21, 2025

Before, when bootstrap did a check build of rustc stage N (with a build compiler that was stage N-1), it automatically copied the resulting .rmeta artifacts into the sysroot of the stage N-1 build compiler, so that stage N rustc_private tools such as miri could be compiled using the stage N-1 build compiler. This has a number of issues:

  • It was done unconditionally, even if no rustc_private tools were actually built.
  • If we did a check and a build of the same stage compiler in the same bootstrap invocation, the generated rmeta and rlib files could clash. This is also why you can see that check::Std actually doesn't copy the artifacts anymore (which forced us to build std instead of just checking it in a bunch of Check steps).
  • It was polluting the sysroot of the build compiler. This is especially annoying for the stage 0 compiler, because we are forced to create an artificial sysroot for it, so that we can copy new stuff into it.
  • It was very implicit in bootstrap.

Based on suggestions by @cuviper and @bjorn3, I tried to change how this behaves. Instead of copying the rmeta artifacts into the sysroot of the build compiler (from where they would be loaded implicitly), they are now stored in a separate transient bootstrap build directory, and they are then explicitly passed only when checking rustc_private tools using the -L flag. The flags are passed out-of-band through our rustc wrapper, to avoid invalidating the build cache. This is the first commit.

The second commit does the same for std. For a few months, we used to build std instead of just checking it when doing a cross-compile check of something that required std, this now fixes it. There is still the previous ordering requirement though, that check::Std has to be executed as the last check step, or rather nothing that requires checked std should be executed after it, because it will run into rmeta/rlib duplications (

). I tried to fix in this PR, but it quickly runs into the fact that building things currently copies rlib artifacts into the build compiler sysroot. I want to fix that as one of the next steps. After we get rid of all the copies (or rather, we only do the copies for dist/stage2+ and do not copy anything into the stage0 compiler's sysroot), we could hopefully finally get rid of stage0-sysroot.

Based on my local tests, this seems to be working fine. If it works on CI, and we don't run into other issues after merging it, I'd like to do the same also for rlib artifacts generated during x build.

r? @jieyouxu

@rustbot
Copy link
Collaborator

rustbot commented Jul 21, 2025

jieyouxu is currently at their maximum review capacity.
They may take a while to respond.

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels Jul 21, 2025
@rust-log-analyzer

This comment has been minimized.

@bjorn3
Copy link
Member

bjorn3 commented Jul 21, 2025

nit: s/hcekc/check in the PR title

@Kobzol Kobzol changed the title Do not copy .rmeta files into the sysroot of the build compiler during hcekc Do not copy .rmeta files into the sysroot of the build compiler during check Jul 21, 2025
@Kobzol
Copy link
Member Author

Kobzol commented Jul 21, 2025

I will also need to do this for the Clippy steps.

@Kobzol
Copy link
Member Author

Kobzol commented Jul 21, 2025

Uhh, x clippy ci ran clippy using in-tree clippy, not stage 0 clippy. I will have to go through the clippy steps first and make that more compatible with what x check does first.

This helps to avoid polluting the sysroot of the build compiler.
@Kobzol Kobzol changed the title Do not copy .rmeta files into the sysroot of the build compiler during check Do not copy .rmeta files into the sysroot of the build compiler during check of rustc/std Aug 16, 2025
@Kobzol Kobzol marked this pull request as ready for review August 16, 2025 10:39
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Aug 16, 2025
@Kobzol
Copy link
Member Author

Kobzol commented Aug 16, 2025

This should be ready for a review now.

@rust-log-analyzer
Copy link
Collaborator

The job pr-check-1 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
[TIMING:start] tool::LibcxxVersionTool { target: x86_64-unknown-linux-gnu }
[TIMING:end] tool::LibcxxVersionTool { target: x86_64-unknown-linux-gnu } -- 0.219
[TIMING:start] compile::Assemble { target_compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false } }
[TIMING:end] compile::Assemble { target_compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false } } -- 0.000
[TIMING:start] check::Bootstrap { compiler: CompilerForCheck { build_compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: None, std_rmeta_sysroot: None }, target: x86_64-unknown-linux-gnu }
[TIMING:start] builder::Libdir { compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, target: x86_64-unknown-linux-gnu }
[TIMING:start] compile::Sysroot { compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, force_recompile: false }
downloading https://ci-artifacts.rust-lang.org/rustc-builds-alt/1ae7c4907275f10b3db9e886bc8809ec063e45ee/rust-dev-nightly-x86_64-unknown-linux-gnu.tar.xz
extracting /checkout/obj/build/cache/llvm-1ae7c4907275f10b3db9e886bc8809ec063e45ee-true/rust-dev-nightly-x86_64-unknown-linux-gnu.tar.xz to /checkout/obj/build/x86_64-unknown-linux-gnu/ci-llvm
[TIMING:end] compile::Sysroot { compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, force_recompile: false } -- 13.753
---
[RUSTC-TIMING] rustdoc test:true 0.043
[RUSTC-TIMING] rustc test:true 0.061
    Finished `release` profile [optimized] target(s) in 17.33s
##[endgroup]
[TIMING:end] check::Bootstrap { compiler: CompilerForCheck { build_compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: None, std_rmeta_sysroot: None }, target: x86_64-unknown-linux-gnu } -- 17.349
Build completed successfully in 0:00:47
+ /scripts/check-default-config-profiles.sh
##[group]Building bootstrap
   Compiling bootstrap v0.0.0 (/checkout/src/bootstrap)
    Finished `dev` profile [unoptimized] target(s) in 10.43s
---
[TIMING:start] tool::LibcxxVersionTool { target: x86_64-unknown-linux-gnu }
[TIMING:end] tool::LibcxxVersionTool { target: x86_64-unknown-linux-gnu } -- 0.001
[TIMING:start] compile::Assemble { target_compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false } }
[TIMING:end] compile::Assemble { target_compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false } } -- 0.000
[TIMING:start] check::Compiletest { compiler: CompilerForCheck { build_compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: None, std_rmeta_sysroot: None }, target: x86_64-unknown-linux-gnu }
[TIMING:start] builder::Libdir { compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, target: x86_64-unknown-linux-gnu }
[TIMING:start] compile::Sysroot { compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, force_recompile: false }
[TIMING:end] compile::Sysroot { compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, force_recompile: false } -- 0.007
[TIMING:end] builder::Libdir { compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, target: x86_64-unknown-linux-gnu } -- 0.002
##[group]Checking stage1 compiletest (stage0 -> stage1, x86_64-unknown-linux-gnu)
---
[RUSTC-TIMING] compiletest test:true 0.030
[RUSTC-TIMING] compiletest test:false 0.031
    Finished `release` profile [optimized] target(s) in 11.40s
##[endgroup]
[TIMING:end] check::Compiletest { compiler: CompilerForCheck { build_compiler: Compiler { stage: 0, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: None, std_rmeta_sysroot: None }, target: x86_64-unknown-linux-gnu } -- 11.427
Build completed successfully in 0:00:12
+ python3 ../x.py check --target=i686-pc-windows-gnu --host=i686-pc-windows-gnu
##[group]Building bootstrap
    Finished `dev` profile [unoptimized] target(s) in 0.04s
##[endgroup]
---
[RUSTC-TIMING] sysroot test:false 0.029
    Finished `release` profile [optimized] target(s) in 57.35s
##[endgroup]
[TIMING:end] check::Std { build_compiler: Compiler { stage: 1, host: x86_64-unknown-linux-gnu, forced_compiler: false }, target: i686-pc-windows-gnu, crates: [] } -- 57.370
[TIMING:end] check::PrepareStdRmetaSysroot { build_compiler: Compiler { stage: 1, host: x86_64-unknown-linux-gnu, forced_compiler: false }, target: i686-pc-windows-gnu } -- 0.001
[TIMING:start] check::Rustc { build_compiler: CompilerForCheck { build_compiler: Compiler { stage: 1, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: None, std_rmeta_sysroot: Some(RmetaSysroot { host_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/host", target_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/i686-pc-windows-gnu" }) }, target: i686-pc-windows-gnu, crates: ["rustc-main", "rustc_abi", "rustc_arena", "rustc_ast", "rustc_ast_ir", "rustc_ast_lowering", "rustc_ast_passes", "rustc_ast_pretty", "rustc_attr_parsing", "rustc_baked_icu_data", "rustc_borrowck", "rustc_builtin_macros", "rustc_codegen_llvm", "rustc_codegen_ssa", "rustc_const_eval", "rustc_data_structures", "rustc_driver", "rustc_driver_impl", "rustc_error_codes", "rustc_error_messages", "rustc_errors", "rustc_expand", "rustc_feature", "rustc_fluent_macro", "rustc_fs_util", "rustc_graphviz", "rustc_hashes", "rustc_hir", "rustc_hir_analysis", "rustc_hir_pretty", "rustc_hir_typeck", "rustc_incremental", "rustc_index", "rustc_index_macros", "rustc_infer", "rustc_interface", "rustc_lexer", "rustc_lint", "rustc_lint_defs", "rustc_llvm", "rustc_log", "rustc_macros", "rustc_metadata", "rustc_middle", "rustc_mir_build", "rustc_mir_dataflow", "rustc_mir_transform", "rustc_monomorphize", "rustc_next_trait_solver", "rustc_parse", "rustc_parse_format", "rustc_passes", "rustc_pattern_analysis", "rustc_privacy", "rustc_proc_macro", "rustc_public", "rustc_public_bridge", "rustc_query_impl", "rustc_query_system", "rustc_resolve", "rustc_sanitizers", "rustc_serialize", "rustc_session", "rustc_span", "rustc_symbol_mangling", "rustc_target", "rustc_thread_pool", "rustc_trait_selection", "rustc_traits", "rustc_transmute", "rustc_ty_utils", "rustc_type_ir", "rustc_type_ir_macros"] }
##[group]Checking stage2 compiler artifacts {rustc-main, rustc_abi, rustc_arena, rustc_ast, rustc_ast_ir, rustc_ast_lowering, rustc_ast_passes, rustc_ast_pretty, rustc_attr_parsing, rustc_baked_icu_data, rustc_borrowck, rustc_builtin_macros, rustc_codegen_llvm, rustc_codegen_ssa, rustc_const_eval, rustc_data_structures, rustc_driver, rustc_driver_impl, rustc_error_codes, rustc_error_messages, rustc_errors, rustc_expand, rustc_feature, rustc_fluent_macro, rustc_fs_util, rustc_graphviz, rustc_hashes, rustc_hir, rustc_hir_analysis, rustc_hir_pretty, rustc_hir_typeck, rustc_incremental, rustc_index, rustc_index_macros, rustc_infer, rustc_interface, rustc_lexer, rustc_lint, rustc_lint_defs, rustc_llvm, rustc_log, rustc_macros, rustc_metadata, rustc_middle, rustc_mir_build, rustc_mir_dataflow, rustc_mir_transform, rustc_monomorphize, rustc_next_trait_solver, rustc_parse, rustc_parse_format, rustc_passes, rustc_pattern_analysis, rustc_privacy, rustc_proc_macro, rustc_public, rustc_public_bridge, rustc_query_impl, rustc_query_system, rustc_resolve, rustc_sanitizers, rustc_serialize, rustc_session, rustc_span, rustc_symbol_mangling, rustc_target, rustc_thread_pool, rustc_trait_selection, rustc_traits, rustc_transmute, rustc_ty_utils, rustc_type_ir, rustc_type_ir_macros} (stage1:x86_64-unknown-linux-gnu -> stage2:i686-pc-windows-gnu)
---
[RUSTC-TIMING] rustc_driver test:false 0.066
[RUSTC-TIMING] rustc_main test:false 0.069
    Finished `release` profile [optimized] target(s) in 2m 48s
##[endgroup]
[TIMING:end] check::Rustc { build_compiler: CompilerForCheck { build_compiler: Compiler { stage: 1, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: None, std_rmeta_sysroot: Some(RmetaSysroot { host_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/host", target_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/i686-pc-windows-gnu" }) }, target: i686-pc-windows-gnu, crates: ["rustc-main", "rustc_abi", "rustc_arena", "rustc_ast", "rustc_ast_ir", "rustc_ast_lowering", "rustc_ast_passes", "rustc_ast_pretty", "rustc_attr_parsing", "rustc_baked_icu_data", "rustc_borrowck", "rustc_builtin_macros", "rustc_codegen_llvm", "rustc_codegen_ssa", "rustc_const_eval", "rustc_data_structures", "rustc_driver", "rustc_driver_impl", "rustc_error_codes", "rustc_error_messages", "rustc_errors", "rustc_expand", "rustc_feature", "rustc_fluent_macro", "rustc_fs_util", "rustc_graphviz", "rustc_hashes", "rustc_hir", "rustc_hir_analysis", "rustc_hir_pretty", "rustc_hir_typeck", "rustc_incremental", "rustc_index", "rustc_index_macros", "rustc_infer", "rustc_interface", "rustc_lexer", "rustc_lint", "rustc_lint_defs", "rustc_llvm", "rustc_log", "rustc_macros", "rustc_metadata", "rustc_middle", "rustc_mir_build", "rustc_mir_dataflow", "rustc_mir_transform", "rustc_monomorphize", "rustc_next_trait_solver", "rustc_parse", "rustc_parse_format", "rustc_passes", "rustc_pattern_analysis", "rustc_privacy", "rustc_proc_macro", "rustc_public", "rustc_public_bridge", "rustc_query_impl", "rustc_query_system", "rustc_resolve", "rustc_sanitizers", "rustc_serialize", "rustc_session", "rustc_span", "rustc_symbol_mangling", "rustc_target", "rustc_thread_pool", "rustc_trait_selection", "rustc_traits", "rustc_transmute", "rustc_ty_utils", "rustc_type_ir", "rustc_type_ir_macros"] } -- 168.957
[TIMING:start] check::PrepareRustcRmetaSysroot { build_compiler: CompilerForCheck { build_compiler: Compiler { stage: 1, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: None, std_rmeta_sysroot: Some(RmetaSysroot { host_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/host", target_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/i686-pc-windows-gnu" }) }, target: i686-pc-windows-gnu }
[TIMING:start] check::Rustc { build_compiler: CompilerForCheck { build_compiler: Compiler { stage: 1, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: None, std_rmeta_sysroot: Some(RmetaSysroot { host_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/host", target_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/i686-pc-windows-gnu" }) }, target: i686-pc-windows-gnu, crates: [] }
##[group]Checking stage2 compiler artifacts (stage1:x86_64-unknown-linux-gnu -> stage2:i686-pc-windows-gnu)
[RUSTC-TIMING] build_script_build test:false 0.408
[RUSTC-TIMING] unicode_ident test:false 0.146
[RUSTC-TIMING] cfg_if test:false 0.042
[RUSTC-TIMING] windows_targets test:false 0.032
---
[RUSTC-TIMING] rustc_driver test:false 0.066
[RUSTC-TIMING] rustc_main test:false 0.069
    Finished `release` profile [optimized] target(s) in 0.22s
##[endgroup]
[TIMING:end] check::Rustc { build_compiler: CompilerForCheck { build_compiler: Compiler { stage: 1, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: None, std_rmeta_sysroot: Some(RmetaSysroot { host_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/host", target_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/i686-pc-windows-gnu" }) }, target: i686-pc-windows-gnu, crates: [] } -- 0.275
[TIMING:end] check::PrepareRustcRmetaSysroot { build_compiler: CompilerForCheck { build_compiler: Compiler { stage: 1, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: None, std_rmeta_sysroot: Some(RmetaSysroot { host_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/host", target_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/i686-pc-windows-gnu" }) }, target: i686-pc-windows-gnu } -- 0.005
[TIMING:start] check::Rustdoc { compiler: CompilerForCheck { build_compiler: Compiler { stage: 1, host: x86_64-unknown-linux-gnu, forced_compiler: false }, rustc_rmeta_sysroot: Some(RmetaSysroot { host_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-rustc-rmeta-artifacts/host", target_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2-rustc-rmeta-artifacts/i686-pc-windows-gnu" }), std_rmeta_sysroot: Some(RmetaSysroot { host_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/host", target_dir: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std-rmeta-artifacts/i686-pc-windows-gnu" }) }, target: i686-pc-windows-gnu }
##[group]Checking stage2 rustdoc (stage1:x86_64-unknown-linux-gnu -> stage2:i686-pc-windows-gnu)
---
   |
32 | extern crate rustc_abi;
   | ^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_ast`
  --> src/librustdoc/lib.rs:33:1
   |
33 | extern crate rustc_ast;
   | ^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_ast_pretty`
  --> src/librustdoc/lib.rs:34:1
   |
34 | extern crate rustc_ast_pretty;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_attr_parsing`
  --> src/librustdoc/lib.rs:35:1
   |
35 | extern crate rustc_attr_parsing;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_data_structures`
  --> src/librustdoc/lib.rs:36:1
   |
36 | extern crate rustc_data_structures;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_driver`
  --> src/librustdoc/lib.rs:37:1
   |
37 | extern crate rustc_driver;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_errors`
  --> src/librustdoc/lib.rs:38:1
   |
38 | extern crate rustc_errors;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_expand`
  --> src/librustdoc/lib.rs:39:1
   |
39 | extern crate rustc_expand;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_feature`
  --> src/librustdoc/lib.rs:40:1
   |
40 | extern crate rustc_feature;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_hir`
  --> src/librustdoc/lib.rs:41:1
   |
41 | extern crate rustc_hir;
   | ^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_hir_analysis`
  --> src/librustdoc/lib.rs:42:1
   |
42 | extern crate rustc_hir_analysis;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_hir_pretty`
  --> src/librustdoc/lib.rs:43:1
   |
43 | extern crate rustc_hir_pretty;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_index`
  --> src/librustdoc/lib.rs:44:1
   |
44 | extern crate rustc_index;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_infer`
  --> src/librustdoc/lib.rs:45:1
   |
45 | extern crate rustc_infer;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_interface`
  --> src/librustdoc/lib.rs:46:1
   |
46 | extern crate rustc_interface;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_lexer`
  --> src/librustdoc/lib.rs:47:1
   |
47 | extern crate rustc_lexer;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_lint`
  --> src/librustdoc/lib.rs:48:1
   |
48 | extern crate rustc_lint;
   | ^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_lint_defs`
  --> src/librustdoc/lib.rs:49:1
   |
49 | extern crate rustc_lint_defs;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_log`
  --> src/librustdoc/lib.rs:50:1
   |
50 | extern crate rustc_log;
   | ^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_macros`
  --> src/librustdoc/lib.rs:51:1
   |
51 | extern crate rustc_macros;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_metadata`
  --> src/librustdoc/lib.rs:52:1
   |
52 | extern crate rustc_metadata;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_middle`
  --> src/librustdoc/lib.rs:53:1
   |
53 | extern crate rustc_middle;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_parse`
  --> src/librustdoc/lib.rs:54:1
   |
54 | extern crate rustc_parse;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_passes`
  --> src/librustdoc/lib.rs:55:1
   |
55 | extern crate rustc_passes;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_resolve`
  --> src/librustdoc/lib.rs:56:1
   |
56 | extern crate rustc_resolve;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_serialize`
  --> src/librustdoc/lib.rs:57:1
   |
57 | extern crate rustc_serialize;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_session`
  --> src/librustdoc/lib.rs:58:1
   |
58 | extern crate rustc_session;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_span`
  --> src/librustdoc/lib.rs:59:1
   |
59 | extern crate rustc_span;
   | ^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_target`
  --> src/librustdoc/lib.rs:60:1
   |
60 | extern crate rustc_target;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0463]: can't find crate for `rustc_trait_selection`
  --> src/librustdoc/lib.rs:61:1
   |
61 | extern crate rustc_trait_selection;
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate
   |
   = help: maybe you need to install the missing components with: `rustup component add rust-src rustc-dev llvm-tools-preview`

error[E0432]: unresolved imports `crate::lint::BROKEN_INTRA_DOC_LINKS`, `crate::lint::PRIVATE_INTRA_DOC_LINKS`
  --> src/librustdoc/passes/collect_intra_doc_links.rs:36:19
   |
36 | use crate::lint::{BROKEN_INTRA_DOC_LINKS, PRIVATE_INTRA_DOC_LINKS};
   |                   ^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^ no `PRIVATE_INTRA_DOC_LINKS` in `lint`
   |                   |
   |                   no `BROKEN_INTRA_DOC_LINKS` in `lint`

error[E0408]: variable `AssocFn` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `AssocFn`
497 |             | AssocFn
    |               ------- variable not in all patterns
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `AssocFn`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `AssocFn`
---
    |               ^^^^^^^^^ pattern doesn't bind `AssocFn`
511 |             | TraitAlias),
    |               ^^^^^^^^^^ pattern doesn't bind `AssocFn`
    |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::AssocFn`
   --> src/librustdoc/clean/utils.rs:497:15
    |
497 |             | AssocFn
    |               ^^^^^^^

error[E0408]: variable `AssocConst` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `AssocConst`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `AssocConst`
498 |             | AssocConst
    |               ---------- variable not in all patterns
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `AssocConst`
500 |             | Fn
    |               ^^ pattern doesn't bind `AssocConst`
---

error[E0408]: variable `Variant` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `Variant`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `Variant`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `Variant`
499 |             | Variant
    |               ------- variable not in all patterns
500 |             | Fn
    |               ^^ pattern doesn't bind `Variant`
501 |             | TyAlias
    |               ^^^^^^^ pattern doesn't bind `Variant`
---

error[E0408]: variable `Fn` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `Fn`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `Fn`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `Fn`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `Fn`
500 |             | Fn
    |               -- variable not in all patterns
501 |             | TyAlias
    |               ^^^^^^^ pattern doesn't bind `Fn`
502 |             | Enum
---
    |
500 |             | crate::clean::PrimitiveType::Fn
    |               +++++++++++++++++++++++++++++

error[E0408]: variable `TyAlias` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `TyAlias`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `TyAlias`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `TyAlias`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `TyAlias`
500 |             | Fn
    |               ^^ pattern doesn't bind `TyAlias`
501 |             | TyAlias
    |               ------- variable not in all patterns
502 |             | Enum
---
    |               ^^^^^^^^^ pattern doesn't bind `TyAlias`
511 |             | TraitAlias),
    |               ^^^^^^^^^^ pattern doesn't bind `TyAlias`
    |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::TyAlias`
   --> src/librustdoc/clean/utils.rs:501:15
    |
501 |             | TyAlias
    |               ^^^^^^^

error[E0408]: variable `Enum` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `Enum`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `Enum`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `Enum`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `Enum`
500 |             | Fn
    |               ^^ pattern doesn't bind `Enum`
501 |             | TyAlias
    |               ^^^^^^^ pattern doesn't bind `Enum`
502 |             | Enum
---

error[E0408]: variable `Trait` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `Trait`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `Trait`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `Trait`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `Trait`
500 |             | Fn
    |               ^^ pattern doesn't bind `Trait`
501 |             | TyAlias
    |               ^^^^^^^ pattern doesn't bind `Trait`
502 |             | Enum
---

error[E0408]: variable `Struct` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `Struct`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `Struct`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `Struct`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `Struct`
500 |             | Fn
    |               ^^ pattern doesn't bind `Struct`
501 |             | TyAlias
    |               ^^^^^^^ pattern doesn't bind `Struct`
502 |             | Enum
---

error[E0408]: variable `Union` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `Union`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `Union`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `Union`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `Union`
500 |             | Fn
    |               ^^ pattern doesn't bind `Union`
501 |             | TyAlias
    |               ^^^^^^^ pattern doesn't bind `Union`
502 |             | Enum
---

error[E0408]: variable `Mod` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `Mod`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `Mod`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `Mod`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `Mod`
500 |             | Fn
    |               ^^ pattern doesn't bind `Mod`
501 |             | TyAlias
    |               ^^^^^^^ pattern doesn't bind `Mod`
502 |             | Enum
---
    |               ^^^^^^^^^ pattern doesn't bind `Mod`
511 |             | TraitAlias),
    |               ^^^^^^^^^^ pattern doesn't bind `Mod`
    |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::Mod`
   --> src/librustdoc/clean/utils.rs:506:15
    |
506 |             | Mod
    |               ^^^

error[E0408]: variable `ForeignTy` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `ForeignTy`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `ForeignTy`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `ForeignTy`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `ForeignTy`
500 |             | Fn
    |               ^^ pattern doesn't bind `ForeignTy`
501 |             | TyAlias
    |               ^^^^^^^ pattern doesn't bind `ForeignTy`
502 |             | Enum
---
    |               ^^^^^^^^^ pattern doesn't bind `ForeignTy`
511 |             | TraitAlias),
    |               ^^^^^^^^^^ pattern doesn't bind `ForeignTy`
    |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::ForeignTy`
   --> src/librustdoc/clean/utils.rs:507:15
    |
507 |             | ForeignTy
    |               ^^^^^^^^^

error[E0408]: variable `Const` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `Const`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `Const`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `Const`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `Const`
500 |             | Fn
    |               ^^ pattern doesn't bind `Const`
501 |             | TyAlias
    |               ^^^^^^^ pattern doesn't bind `Const`
502 |             | Enum
---

error[E0408]: variable `TraitAlias` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^ pattern doesn't bind `TraitAlias`
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `TraitAlias`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `TraitAlias`
499 |             | Variant
    |               ^^^^^^^ pattern doesn't bind `TraitAlias`
500 |             | Fn
    |               ^^ pattern doesn't bind `TraitAlias`
501 |             | TyAlias
    |               ^^^^^^^ pattern doesn't bind `TraitAlias`
502 |             | Enum
---

error[E0408]: variable `AssocTy` is not bound in all patterns
   --> src/librustdoc/clean/utils.rs:497:15
    |
496 |             kind @ (AssocTy
    |                     ------- variable not in all patterns
497 |             | AssocFn
    |               ^^^^^^^ pattern doesn't bind `AssocTy`
498 |             | AssocConst
    |               ^^^^^^^^^^ pattern doesn't bind `AssocTy`
---
    |               ^^^^^^^^^ pattern doesn't bind `AssocTy`
511 |             | TraitAlias),
    |               ^^^^^^^^^^ pattern doesn't bind `AssocTy`
    |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::AssocTy`
   --> src/librustdoc/clean/utils.rs:496:21
    |
496 |             kind @ (AssocTy
    |                     ^^^^^^^

error[E0530]: match bindings cannot shadow tuple variants
   --> src/librustdoc/passes/collect_intra_doc_links.rs:157:42
    |
157 |             ToolMod | NonMacroAttr(..) | Err => Result::Err(()),
    |                                          ^^^
    |                                          |
    |                                          cannot be named the same as a tuple variant
    |                                          help: try specify the pattern arguments: `Err(..)`
    |
---

error[E0408]: variable `Err` is not bound in all patterns
   --> src/librustdoc/passes/collect_intra_doc_links.rs:157:13
    |
157 |             ToolMod | NonMacroAttr(..) | Err => Result::Err(()),
    |             ^^^^^^^   ^^^^^^^^^^^^^^^^   --- variable not in all patterns
    |             |         |
    |             |         pattern doesn't bind `Err`
    |             pattern doesn't bind `Err`
    |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::Err`
   --> src/librustdoc/passes/collect_intra_doc_links.rs:157:42
    |
157 |             ToolMod | NonMacroAttr(..) | Err => Result::Err(()),
    |                                          ^^^

error[E0408]: variable `ToolMod` is not bound in all patterns
   --> src/librustdoc/passes/collect_intra_doc_links.rs:157:23
    |
157 |             ToolMod | NonMacroAttr(..) | Err => Result::Err(()),
    |             -------   ^^^^^^^^^^^^^^^^   ^^^ pattern doesn't bind `ToolMod`
    |             |         |
    |             |         pattern doesn't bind `ToolMod`
    |             variable not in all patterns
    |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::ToolMod`
   --> src/librustdoc/passes/collect_intra_doc_links.rs:157:13
    |
157 |             ToolMod | NonMacroAttr(..) | Err => Result::Err(()),
    |             ^^^^^^^

error[E0408]: variable `ForeignMod` is not bound in all patterns
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2080:29
     |
2080 | ...                   Mod | ForeignMod => "inner item",
     |                       ^^^   ---------- variable not in all patterns
     |                       |
     |                       pattern doesn't bind `ForeignMod`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::ForeignMod`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2080:35
     |
2080 | ...                   Mod | ForeignMod => "inner item",
     |                             ^^^^^^^^^^

error[E0408]: variable `Mod` is not bound in all patterns
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2080:35
     |
2080 | ...                   Mod | ForeignMod => "inner item",
     |                       ---   ^^^^^^^^^^ pattern doesn't bind `Mod`
     |                       |
     |                       variable not in all patterns
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::Mod`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2080:29
     |
2080 | ...                   Mod | ForeignMod => "inner item",
     |                       ^^^

error[E0408]: variable `Union` is not bound in all patterns
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2082:29
     |
2082 | ...                   Enum | Union => "variant or associated item",
     |                       ^^^^   ----- variable not in all patterns
     |                       |
     |                       pattern doesn't bind `Union`
     |
help: if you meant to match on unit variants, use the full path in the pattern
     |
2082 |                             Enum | crate::formats::item_type::ItemType::Union => "variant or associated item",
     |                                    +++++++++++++++++++++++++++++++++++++
2082 |                             Enum | rustdoc_json_types::ItemKind::Union => "variant or associated item",
     |                                    ++++++++++++++++++++++++++++++

error[E0408]: variable `Enum` is not bound in all patterns
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2082:36
     |
2082 | ...                   Enum | Union => "variant or associated item",
     |                       ----   ^^^^^ pattern doesn't bind `Enum`
     |                       |
     |                       variable not in all patterns
     |
help: if you meant to match on unit variants, use the full path in the pattern
     |
2082 |                             crate::formats::item_type::ItemType::Enum | Union => "variant or associated item",
     |                             +++++++++++++++++++++++++++++++++++++
2082 |                             rustdoc_json_types::ItemKind::Enum | Union => "variant or associated item",
     |                             ++++++++++++++++++++++++++++++
2082 |                             serde::de::Unexpected::Enum | Union => "variant or associated item",
     |                             +++++++++++++++++++++++

error[E0408]: variable `Field` is not bound in all patterns
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2093:29
     |
---
     |                         ^^^^^^^^^ pattern doesn't bind `Field`
2108 | ...                   | InlineConst => {
     |                         ^^^^^^^^^^^ pattern doesn't bind `Field`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::Field`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2094:31
     |
2094 | ...                   | Field
     |                         ^^^^^

---
     |                         ^^^^^^^^^ pattern doesn't bind `Closure`
2108 | ...                   | InlineConst => {
     |                         ^^^^^^^^^^^ pattern doesn't bind `Closure`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::Closure`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2095:31
     |
2095 | ...                   | Closure
     |                         ^^^^^^^

---
     |                         ^^^^^^^^^ pattern doesn't bind `AssocTy`
2108 | ...                   | InlineConst => {
     |                         ^^^^^^^^^^^ pattern doesn't bind `AssocTy`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::AssocTy`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2096:31
     |
2096 | ...                   | AssocTy
     |                         ^^^^^^^

---
     |                         ^^^^^^^^^ pattern doesn't bind `AssocFn`
2108 | ...                   | InlineConst => {
     |                         ^^^^^^^^^^^ pattern doesn't bind `AssocFn`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::AssocFn`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2098:31
     |
2098 | ...                   | AssocFn
     |                         ^^^^^^^

---
     |                         ^^^^^^^^^ pattern doesn't bind `ConstParam`
2108 | ...                   | InlineConst => {
     |                         ^^^^^^^^^^^ pattern doesn't bind `ConstParam`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::ConstParam`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2102:31
     |
2102 | ...                   | ConstParam
     |                         ^^^^^^^^^^

---
     |                         ^^^^^^^^^ pattern doesn't bind `LifetimeParam`
2108 | ...                   | InlineConst => {
     |                         ^^^^^^^^^^^ pattern doesn't bind `LifetimeParam`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::LifetimeParam`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2105:31
     |
2105 | ...                   | LifetimeParam
     |                         ^^^^^^^^^^^^^

---
     |                         --------- variable not in all patterns
2108 | ...                   | InlineConst => {
     |                         ^^^^^^^^^^^ pattern doesn't bind `AnonConst`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::AnonConst`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2107:31
     |
2107 | ...                   | AnonConst
     |                         ^^^^^^^^^

---
     |                         ^^^^^^^^^ pattern doesn't bind `InlineConst`
2108 | ...                   | InlineConst => {
     |                         ----------- variable not in all patterns
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::InlineConst`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2108:31
     |
2108 | ...                   | InlineConst => {
     |                         ^^^^^^^^^^^

---
     |                             +++++++++++++++++++++++++++++++++++++
2093 |                             rustdoc_json_types::ItemKind::Variant
     |                             ++++++++++++++++++++++++++++++

error[E0408]: variable `TyAlias` is not bound in all patterns
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2117:29
     |
2117 | ...                   Trait
     |                       ^^^^^ pattern doesn't bind `TyAlias`
2118 | ...                   | TyAlias
---
     |                         ^^^^^^^ pattern doesn't bind `TyAlias`
2123 | ...                   | Static { .. } => "associated item",
     |                         ^^^^^^^^^^^^^ pattern doesn't bind `TyAlias`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::TyAlias`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2118:31
     |
2118 | ...                   | TyAlias
     |                         ^^^^^^^

---
     |                         ^^^^^^^ pattern doesn't bind `ForeignTy`
2123 | ...                   | Static { .. } => "associated item",
     |                         ^^^^^^^^^^^^^ pattern doesn't bind `ForeignTy`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::ForeignTy`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2119:31
     |
2119 | ...                   | ForeignTy
     |                         ^^^^^^^^^

---
     |                         ^^^^^^^ pattern doesn't bind `OpaqueTy`
2123 | ...                   | Static { .. } => "associated item",
     |                         ^^^^^^^^^^^^^ pattern doesn't bind `OpaqueTy`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::OpaqueTy`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2120:31
     |
2120 | ...                   | OpaqueTy
     |                         ^^^^^^^^

---
     |                         ------- variable not in all patterns
2123 | ...                   | Static { .. } => "associated item",
     |                         ^^^^^^^^^^^^^ pattern doesn't bind `TyParam`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::TyParam`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2122:31
     |
2122 | ...                   | TyParam
     |                         ^^^^^^^

---

error[E0408]: variable `GlobalAsm` is not bound in all patterns
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2124:29
     |
2124 | ...                   Impl { .. } | GlobalAsm | SyntheticCoroutineBody => {
     |                       ^^^^^^^^^^^   ---------   ^^^^^^^^^^^^^^^^^^^^^^ pattern doesn't bind `GlobalAsm`
     |                       |             |
     |                       |             variable not in all patterns
     |                       pattern doesn't bind `GlobalAsm`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::GlobalAsm`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2124:43
     |
2124 | ...                   Impl { .. } | GlobalAsm | SyntheticCoroutineBody => {
     |                                     ^^^^^^^^^

error[E0408]: variable `SyntheticCoroutineBody` is not bound in all patterns
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2124:29
     |
2124 | ...                   Impl { .. } | GlobalAsm | SyntheticCoroutineBody => {
     |                       ^^^^^^^^^^^   ^^^^^^^^^   ---------------------- variable not in all patterns
     |                       |             |
     |                       |             pattern doesn't bind `SyntheticCoroutineBody`
     |                       pattern doesn't bind `SyntheticCoroutineBody`
     |
help: if you meant to match on a variant or a `const` item, consider making the path in the pattern qualified: `path::to::ModOrType::SyntheticCoroutineBody`
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2124:55
     |
2124 | ...                   Impl { .. } | GlobalAsm | SyntheticCoroutineBody => {
     |                                                 ^^^^^^^^^^^^^^^^^^^^^^

error[E0422]: cannot find struct, variant or union type `PatExpr` in this scope
   --> src/librustdoc/clean/utils.rs:304:53
    |
304 |         PatKind::TupleStruct(p, ..) | PatKind::Expr(PatExpr { kind: PatExprKind::Path(p), .. }) => {
    |                                                     ^^^^^^^ not found in this scope

error[E0412]: cannot find type `Pat` in this scope
    --> src/librustdoc/clean/utils.rs:321:32
     |
 321 |             fn print_pat(pat: &Pat<'_>, wild: bool) -> impl Display {
     |                                ^^^
     |
    ::: src/librustdoc/clean/types.rs:2163:1
     |
2163 | pub(crate) struct Path {
     | ---------------------- similarly named struct `Path` defined here
     |
help: there is an enum variant `crate::clean::PrimitiveType::Pat` and 3 others; try using the variant's enum
     |
 321 -             fn print_pat(pat: &Pat<'_>, wild: bool) -> impl Display {
 321 +             fn print_pat(pat: &crate::clean::PrimitiveType, wild: bool) -> impl Display {
     |
 321 -             fn print_pat(pat: &Pat<'_>, wild: bool) -> impl Display {
 321 +             fn print_pat(pat: &crate::clean::Type, wild: bool) -> impl Display {
     |
 321 -             fn print_pat(pat: &Pat<'_>, wild: bool) -> impl Display {
 321 +             fn print_pat(pat: &rustdoc_json_types::Type, wild: bool) -> impl Display {
     |
help: a struct with a similar name exists
     |
 321 |             fn print_pat(pat: &Path<'_>, wild: bool) -> impl Display {
     |                                   +

error[E0422]: cannot find struct, variant or union type `Static` in this scope
   --> src/librustdoc/clean/utils.rs:509:15
    |
---

error[E0531]: cannot find tuple struct or tuple variant `Pointer` in this scope
   --> src/librustdoc/json/conversions.rs:975:9
    |
975 |         Pointer(true) => "isize",
    |         ^^^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Pointer` in this scope
   --> src/librustdoc/json/conversions.rs:976:9
    |
976 |         Pointer(false) => "usize",
    |         ^^^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Fixed` in this scope
   --> src/librustdoc/json/conversions.rs:977:9
    |
977 |         Fixed(I8, true) => "i8",
    |         ^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Fixed` in this scope
   --> src/librustdoc/json/conversions.rs:978:9
    |
978 |         Fixed(I8, false) => "u8",
    |         ^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Fixed` in this scope
   --> src/librustdoc/json/conversions.rs:979:9
    |
979 |         Fixed(I16, true) => "i16",
    |         ^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Fixed` in this scope
   --> src/librustdoc/json/conversions.rs:980:9
    |
980 |         Fixed(I16, false) => "u16",
    |         ^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Fixed` in this scope
   --> src/librustdoc/json/conversions.rs:981:9
    |
981 |         Fixed(I32, true) => "i32",
    |         ^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Fixed` in this scope
   --> src/librustdoc/json/conversions.rs:982:9
    |
982 |         Fixed(I32, false) => "u32",
    |         ^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Fixed` in this scope
   --> src/librustdoc/json/conversions.rs:983:9
    |
983 |         Fixed(I64, true) => "i64",
    |         ^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Fixed` in this scope
   --> src/librustdoc/json/conversions.rs:984:9
    |
984 |         Fixed(I64, false) => "u64",
    |         ^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Fixed` in this scope
   --> src/librustdoc/json/conversions.rs:985:9
    |
985 |         Fixed(I128, true) => "i128",
    |         ^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Fixed` in this scope
   --> src/librustdoc/json/conversions.rs:986:9
    |
986 |         Fixed(I128, false) => "u128",
    |         ^^^^^ not found in this scope

error[E0425]: cannot find value `BROKEN_INTRA_DOC_LINKS` in this scope
   --> src/librustdoc/lint.rs:201:9
    |
---

error[E0531]: cannot find tuple struct or tuple variant `Def` in this scope
   --> src/librustdoc/passes/collect_intra_doc_links.rs:154:13
    |
154 |             Def(kind, id) => Ok(Res::Def(kind, id)),
    |             ^^^ not found in this scope
    |
help: consider importing this tuple variant
    |
  5 + use crate::passes::collect_intra_doc_links::Res::Def;
    |

error[E0531]: cannot find tuple struct or tuple variant `PrimTy` in this scope
   --> src/librustdoc/passes/collect_intra_doc_links.rs:155:13
    |
155 |             PrimTy(prim) => Ok(Res::Primitive(PrimitiveType::from_hir(prim))),
    |             ^^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `NonMacroAttr` in this scope
   --> src/librustdoc/passes/collect_intra_doc_links.rs:157:23
    |
157 |             ToolMod | NonMacroAttr(..) | Err => Result::Err(()),
    |                       ^^^^^^^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
   --> src/librustdoc/passes/collect_intra_doc_links.rs:344:46
    |
344 |         let ty_res = self.resolve_path(path, TypeNS, item_id, module_id).ok_or_else(no_res)?;
    |                                              ^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
   --> src/librustdoc/passes/collect_intra_doc_links.rs:398:18
    |
398 |         if ns != TypeNS || path_str != "Self" {
    |                  ^^^^^^ not found in this scope

error[E0425]: cannot find value `MacroNS` in this scope
   --> src/librustdoc/passes/collect_intra_doc_links.rs:485:25
    |
485 |         } else if ns == MacroNS {
    |                         ^^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
   --> src/librustdoc/passes/collect_intra_doc_links.rs:517:44
    |
517 |         match resolve_primitive(path_root, TypeNS)
    |                                            ^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
   --> src/librustdoc/passes/collect_intra_doc_links.rs:518:54
    |
518 |             .or_else(|| self.resolve_path(path_root, TypeNS, item_id, module_id))
    |                                                      ^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
   --> src/librustdoc/passes/collect_intra_doc_links.rs:659:26
    |
659 |                 if ns == TypeNS && def_kind == DefKind::Enum {
    |                          ^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1293:61
     |
1293 |             && let Some(prim) = resolve_primitive(path_str, TypeNS)
     |                                                             ^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1537:42
     |
1537 |                         for other_ns in [TypeNS, ValueNS, MacroNS] {
     |                                          ^^^^^^ not found in this scope

error[E0425]: cannot find value `ValueNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1537:50
     |
1537 |                         for other_ns in [TypeNS, ValueNS, MacroNS] {
     |                                                  ^^^^^^^ not found in this scope

error[E0425]: cannot find value `MacroNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1537:59
     |
1537 |                         for other_ns in [TypeNS, ValueNS, MacroNS] {
     |                                                           ^^^^^^^ not found in this scope

error[E0425]: cannot find value `MacroNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1563:41
     |
1563 |                     macro_ns: candidate(MacroNS),
     |                                         ^^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1564:40
     |
1564 |                     type_ns: candidate(TypeNS),
     |                                        ^^^^^^ not found in this scope

error[E0425]: cannot find value `ValueNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1565:41
     |
1565 |                     value_ns: candidate(ValueNS).and_then(|v_res| {
     |                                         ^^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1571:50
     |
1571 | ...                   expected_ns: TypeNS,
     |                                    ^^^^^^ not found in this scope

error[E0425]: cannot find value `ValueNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1746:43
     |
1746 |             Self::Kind(DefKind::Field) => ValueNS,
     |                                           ^^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1750:32
     |
1750 |             Self::Primitive => TypeNS,
     |                                ^^^^^^ not found in this scope

error[E0425]: cannot find value `TypeNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1998:36
     |
1998 |                         for ns in [TypeNS, ValueNS, MacroNS] {
     |                                    ^^^^^^ not found in this scope

error[E0425]: cannot find value `ValueNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1998:44
     |
1998 |                         for ns in [TypeNS, ValueNS, MacroNS] {
     |                                            ^^^^^^^ not found in this scope

error[E0425]: cannot find value `MacroNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:1998:53
     |
1998 |                         for ns in [TypeNS, ValueNS, MacroNS] {
     |                                                     ^^^^^^^ not found in this scope

error[E0425]: cannot find value `MacroNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2035:71
     |
2035 | ...                   if disambiguator.is_none_or(|d| d.ns() == MacroNS)
     |                                                                 ^^^^^^^ not found in this scope

error[E0531]: cannot find tuple struct or tuple variant `Macro` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2100:31
     |
---

error[E0422]: cannot find struct, variant or union type `Impl` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2124:29
     |
2124 | ...                   Impl { .. } | GlobalAsm | SyntheticCoroutineBody => {
     |                       ^^^^ not found in this scope
     |
note: these variants exist but are inaccessible
    --> src/librustdoc/formats/cache.rs:638:5
     |
---

error[E0425]: cannot find value `TypeNS` in this scope
    --> src/librustdoc/passes/collect_intra_doc_links.rs:2412:14
     |
2412 |     if ns != TypeNS {
     |              ^^^^^^ not found in this scope

error[E0425]: cannot find value `MISSING_DOC_CODE_EXAMPLES` in module `crate::lint`
   --> src/librustdoc/passes/check_doc_test_visibility.rs:111:22
    |
111 |         crate::lint::MISSING_DOC_CODE_EXAMPLES,
    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^ not found in `crate::lint`

error[E0425]: cannot find value `MISSING_DOC_CODE_EXAMPLES` in module `crate::lint`
   --> src/librustdoc/passes/check_doc_test_visibility.rs:131:48
    |
131 |             cx.tcx.node_span_lint(crate::lint::MISSING_DOC_CODE_EXAMPLES, hir_id, sp, |lint| {
    |                                                ^^^^^^^^^^^^^^^^^^^^^^^^^ not found in `crate::lint`

error[E0425]: cannot find value `PRIVATE_DOC_TESTS` in module `crate::lint`
   --> src/librustdoc/passes/check_doc_test_visibility.rs:139:26
    |
139 |             crate::lint::PRIVATE_DOC_TESTS,
    |                          ^^^^^^^^^^^^^^^^^ not found in `crate::lint`

error[E0425]: cannot find value `BARE_URLS` in module `crate::lint`
  --> src/librustdoc/passes/lint/bare_urls.rs:24:44
   |
24 |         cx.tcx.node_span_lint(crate::lint::BARE_URLS, hir_id, sp, |lint| {
   |                                            ^^^^^^^^^ not found in `crate::lint`

error[E0425]: cannot find value `INVALID_RUST_CODEBLOCKS` in module `crate::lint`
   --> src/librustdoc/passes/lint/check_code_block_syntax.rs:104:40
    |
104 |     cx.tcx.node_span_lint(crate::lint::INVALID_RUST_CODEBLOCKS, hir_id, sp, |lint| {
    |                                        ^^^^^^^^^^^^^^^^^^^^^^^ not found in `crate::lint`

error[E0425]: cannot find value `INVALID_HTML_TAGS` in module `crate::lint`
  --> src/librustdoc/passes/lint/html_tags.rs:22:41
   |
22 |         tcx.node_span_lint(crate::lint::INVALID_HTML_TAGS, hir_id, sp, |lint| {
   |                                         ^^^^^^^^^^^^^^^^^ not found in `crate::lint`

error[E0425]: cannot find value `REDUNDANT_EXPLICIT_LINKS` in module `crate::lint`
   --> src/librustdoc/passes/lint/redundant_explicit_links.rs:195:44
    |
195 |         cx.tcx.node_span_lint(crate::lint::REDUNDANT_EXPLICIT_LINKS, hir_id, explicit_span, |lint| {
    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^ not found in `crate::lint`

error[E0425]: cannot find value `REDUNDANT_EXPLICIT_LINKS` in module `crate::lint`
   --> src/librustdoc/passes/lint/redundant_explicit_links.rs:262:44
    |
262 |         cx.tcx.node_span_lint(crate::lint::REDUNDANT_EXPLICIT_LINKS, hir_id, explicit_span, |lint| {
    |                                            ^^^^^^^^^^^^^^^^^^^^^^^^ not found in `crate::lint`

error[E0425]: cannot find value `UNESCAPED_BACKTICKS` in module `crate::lint`
  --> src/librustdoc/passes/lint/unescaped_backticks.rs:55:49
   |
55 |                 tcx.node_span_lint(crate::lint::UNESCAPED_BACKTICKS, hir_id, span, |lint| {
   |                                                 ^^^^^^^^^^^^^^^^^^^ not found in `crate::lint`

error[E0659]: `inline` is ambiguous
   --> src/librustdoc/clean/utils.rs:658:3
    |
---

error[E0223]: ambiguous associated type
   --> src/librustdoc/core.rs:471:32
    |
471 |     fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
    |                                ^^^^^^^^^^^^^^^^^
    |
help: if there were a trait named `Example` with associated type `MaybeTyCtxt` implemented for `EmitIgnoredResolutionErrors<'tcx>`, you could use the fully-qualified path
    |
471 -     fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
471 +     fn maybe_tcx(&mut self) -> <EmitIgnoredResolutionErrors<'tcx> as Example>::MaybeTyCtxt {
    |

error[E0223]: ambiguous associated type
   --> src/librustdoc/doctest/rust.rs:196:32
    |
196 |     fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
    |                                ^^^^^^^^^^^^^^^^^
    |
help: if there were a trait named `Example` with associated type `MaybeTyCtxt` implemented for `HirCollector<'tcx>`, you could use the fully-qualified path
    |
196 -     fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
196 +     fn maybe_tcx(&mut self) -> <HirCollector<'tcx> as Example>::MaybeTyCtxt {
    |

error[E0223]: ambiguous associated type
   --> src/librustdoc/html/render/span_map.rs:222:32
    |
222 |     fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
    |                                ^^^^^^^^^^^^^^^^^
    |
help: if there were a trait named `Example` with associated type `MaybeTyCtxt` implemented for `SpanMapVisitor<'tcx>`, you could use the fully-qualified path
    |
222 -     fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
222 +     fn maybe_tcx(&mut self) -> <SpanMapVisitor<'tcx> as Example>::MaybeTyCtxt {
    |

error[E0223]: ambiguous associated type
   --> src/librustdoc/scrape_examples.rs:126:32
    |
126 |     fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
    |                                ^^^^^^^^^^^^^^^^^
    |
help: if there were a trait named `Example` with associated type `MaybeTyCtxt` implemented for `FindCalls<'a, 'tcx>`, you could use the fully-qualified path
    |
126 -     fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
126 +     fn maybe_tcx(&mut self) -> <FindCalls<'a, 'tcx> as Example>::MaybeTyCtxt {
    |

error[E0223]: ambiguous associated type
   --> src/librustdoc/visit_ast.rs:601:32
    |
601 |     fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
    |                                ^^^^^^^^^^^^^^^^^
    |
help: if there were a trait named `Example` with associated type `MaybeTyCtxt` implemented for `RustdocVisitor<'_, 'tcx>`, you could use the fully-qualified path
    |
601 -     fn maybe_tcx(&mut self) -> Self::MaybeTyCtxt {
601 +     fn maybe_tcx(&mut self) -> <RustdocVisitor<'_, 'tcx> as Example>::MaybeTyCtxt {
    |

error[E0223]: ambiguous associated type
   --> src/librustdoc/visit_ast.rs:641:10
    |
641 |     ) -> Self::Result {
    |          ^^^^^^^^^^^^
    |
help: if there were a trait named `Example` with associated type `Result` implemented for `RustdocVisitor<'_, 'tcx>`, you could use the fully-qualified path
    |
641 -     ) -> Self::Result {
641 +     ) -> <RustdocVisitor<'_, 'tcx> as Example>::Result {
    |

error[E0282]: type annotations needed
    --> src/librustdoc/html/render/print_item.rs:1426:56
     |
1426 |             js_src_path.extend(target_fqp[..target_fqp.len() - 1].iter().copied());
     |                                                        ^^^ cannot infer type

error[E0277]: the size for values of type `str` cannot be known at compilation time
    --> src/librustdoc/html/render/mod.rs:1056:12
     |
1056 |     if let Some(version) = stable_version.and_then(|version| since_to_string(&version)) {
     |            ^^^^^^^^^^^^^ doesn't have a size known at compile-time
     |
     = help: the trait `Sized` is not implemented for `str`
note: required by a bound in `std::prelude::v1::Some`
    --> /checkout/library/core/src/option.rs:593:17
---

error[E0277]: the size for values of type `str` cannot be known at compilation time
    --> src/librustdoc/html/render/mod.rs:1088:12
     |
1088 |     if let Some((const_title, const_stability)) = const_title_and_stability {
     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
     |
     = help: within `(str, str)`, the trait `Sized` is not implemented for `str`
     = note: required because it appears within the type `(str, str)`
note: required by a bound in `std::prelude::v1::Some`
    --> /checkout/library/core/src/option.rs:593:17
     |
 593 | pub enum Option<T> {
     |                 ^ required by this bound in `std::prelude::v1::Some`
...
 601 |     Some(#[stable(feature = "rust1", since = "1.0.0")] T),
     |     ---- required by a bound in this tuple variant

error[E0392]: lifetime parameter `'a` is never used
   --> src/librustdoc/html/markdown.rs:601:20
    |
601 | struct SummaryLine<'a, I: Iterator<Item = Event<'a>>> {
    |                    ^^ unused lifetime parameter
    |
    = help: consider removing `'a`, referring to it in a field, or using a marker such as `PhantomData`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:294:9
    |
294 |         PatKind::Err(_)
    |         ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:295:11
    |
295 |         | PatKind::Missing // Let's not perpetuate anon params from Rust 2015; use `_` for them.
    |           ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:296:11
    |
296 |         | PatKind::Never
---

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:302:9
    |
302 |         PatKind::Binding(_, _, ident, _) => return ident.name,
    |         ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:303:9
    |
303 |         PatKind::Box(p) | PatKind::Ref(p, _) | PatKind::Guard(p, _) => return name_from_pat(p),
    |         ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:303:27
    |
303 |         PatKind::Box(p) | PatKind::Ref(p, _) | PatKind::Guard(p, _) => return name_from_pat(p),
    |                           ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:303:48
    |
303 |         PatKind::Box(p) | PatKind::Ref(p, _) | PatKind::Guard(p, _) => return name_from_pat(p),
    |                                                ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:304:9
    |
304 |         PatKind::TupleStruct(p, ..) | PatKind::Expr(PatExpr { kind: PatExprKind::Path(p), .. }) => {
    |         ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:304:39
    |
304 |         PatKind::TupleStruct(p, ..) | PatKind::Expr(PatExpr { kind: PatExprKind::Path(p), .. }) => {
    |                                       ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatExprKind`
   --> src/librustdoc/clean/utils.rs:304:69
    |
304 |         PatKind::TupleStruct(p, ..) | PatKind::Expr(PatExpr { kind: PatExprKind::Path(p), .. }) => {
    |                                                                     ^^^^^^^^^^^ use of undeclared type `PatExprKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:307:9
    |
307 |         PatKind::Or(pats) => {
    |         ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:310:9
    |
310 |         PatKind::Tuple(elts, _) => {
    |         ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:313:9
    |
313 |         PatKind::Deref(p) => format!("deref!({})", name_from_pat(p)),
    |         ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:314:9
    |
314 |         PatKind::Expr(..) => {
    |         ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `PatKind`
   --> src/librustdoc/clean/utils.rs:320:9
    |
320 |         PatKind::Slice(begin, mid, end) => {
    |         ^^^^^^^ use of undeclared type `PatKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1790:9
     |
1790 |         TyKind::Never => Primitive(PrimitiveType::Never),
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1791:9
     |
1791 |         TyKind::Ptr(ref m) => RawPointer(m.mutbl, Box::new(clean_ty(m.ty, cx))),
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1792:9
     |
1792 |         TyKind::Ref(l, ref m) => {
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1796:9
     |
1796 |         TyKind::Slice(ty) => Slice(Box::new(clean_ty(ty, cx))),
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1797:9
     |
1797 |         TyKind::Pat(ty, pat) => Type::Pat(Box::new(clean_ty(ty, cx)), format!("{pat:?}").into()),
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1798:9
     |
1798 |         TyKind::Array(ty, const_arg) => {
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1821:9
     |
1821 |         TyKind::Tup(tys) => Tuple(tys.iter().map(|ty| clean_ty(ty, cx)).collect()),
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1822:9
     |
1822 |         TyKind::OpaqueDef(ty) => {
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1825:9
     |
1825 |         TyKind::Path(_) => clean_qpath(ty, cx),
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1826:9
     |
1826 |         TyKind::TraitObject(bounds, lifetime) => {
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1835:9
     |
1835 |         TyKind::FnPtr(barefn) => BareFunction(Box::new(clean_bare_fn_ty(barefn, cx))),
     |         ^^^^^^ use of undeclared type `TyKind`

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1836:9
     |
---

error[E0433]: failed to resolve: use of undeclared type `TyKind`
    --> src/librustdoc/clean/mod.rs:1844:11
     |
1844 |         | TyKind::TraitAscription(_) => Infer,
     |           ^^^^^^ use of undeclared type `TyKind`

Some errors have detailed explanations: E0223, E0277, E0282, E0392, E0408, E0412, E0422, E0425, E0432...
For more information about an error, try `rustc --explain E0223`.
[RUSTC-TIMING] rustdoc test:false 2.547

@jieyouxu
Copy link
Member

aur naur

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants